package com.berchen.接口;

/**
 * 接口的默认方法与静态方法：
 *
 * java7：
 * java8：
 *  默认方法：
 *      实现类对象是可以调用接口的默认方法
 *      接口的默认方法的作用：接口升级。函数式编程
 *      类优先原则，若接口中定义了一个默认方法，而另外一个父类或接口中又定义了一个同名方法时。
 *          选择父类中的方法。如果一个父类提供了具体的实现，那么接口的具有相同名称和参数的默认方法会被忽略。
 *          接口冲突，如果一个父接口提供一个默认方法，而另一个接口也提供了一个具有相同名称和参数列表的方法（不管方法是否是默认方法），那么必须覆盖该方法来解决冲突。
 *      类优先原则：
 *          一个类继承一个类，实现一个接口，该接口和类中有一个同名的方法（接口中的是默认方法）。那么在子类中存在的是父类中的方法，不是接口中的。
 *          一个类实现两个接口，两接口中都有同一个同名的默认方法（不是默认方法也可），那么该类中必须实现该同名的方法（实现那个接口中的都可以）。
 *  
 *  静态方法：
 *      直接用接口名调用方法即可。
 *  
    私有方法是Java1.9之后出来的。
 *  私有方法：
 *      默认私有方法：解决多个默认方法重复代码的问题
 *      静态私有方法：解决多个静态方法重复代码的问题
 *
 */
public interface TestImpl {

    // 默认 public default ，public 可以省略
    public default String getName(){

        return "默认方法";
    }

    public static String getAge(){
        return "静态方法";
    }
}
